#!/bin/sh

#################################################################################
#
#   Lynis
# ------------------
#
# Copyright 2007-2013, Michael Boelen
# Copyright 2007-2018, CISOfy
#
# Website  : https://cisofy.com
# Blog     : http://linux-audit.com
# GitHub   : https://github.com/CISOfy/lynis
#
# Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
# welcome to redistribute it under the terms of the GNU General Public License.
# See LICENSE file for usage of this software.
#
#################################################################################
#
# LDAP Services
#
#################################################################################
#
    InsertSection "LDAP Services"
#
#################################################################################
#
    SLAPD_CONF_LOCS="${ROOTDIR}etc/ldap ${ROOTDIR}etc/openldap ${ROOTDIR}usr/local/etc/openldap"
    SLAPD_CONF_LOCATION=""
    SLAPD_RUNNING=0
#
#################################################################################
#
    # Test        : LDAP-2219
    # Description : Check running OpenLDAP instance
    Register --test-no LDAP-2219 --weight L --network NO --category security --description "Check running OpenLDAP instance"
    if [ ${SKIPTEST} -eq 0 ]; then
        # TODO adding additional slash needed?
        IsRunning slapd
        if [ ${RUNNING} -eq 0 ]; then
            Display --indent 2 --text "- Checking OpenLDAP instance" --result "${STATUS_NOT_FOUND}" --color WHITE
            LogText "Result: No running slapd process found."
        else
            Display --indent 2 --text "- Checking OpenLDAP instance" --result "${STATUS_FOUND}" --color GREEN
            LogText "Result: Found running slapd process"
            SLAPDFOUND=1
            SLAPD_RUNNING=1
        fi
    fi
#
#################################################################################
#
    # Test        : LDAP-2224
    # Description : Search slapd.conf
    if [ ${SLAPD_RUNNING} -eq 1 ]; then PREQS_MET="YES"; else PREQS_MET="NO"; fi
    Register --test-no LDAP-2224 --preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Check presence slapd.conf"
    if [ ${SKIPTEST} -eq 0 ]; then
        LogText "Test: Searching slapd.conf"
        for I in ${SLAPD_CONF_LOCS}; do
            if [ -f ${I}/slapd.conf ]; then
                LogText "Result: found ${I}/slapd.conf"
                SLAPD_CONF_LOCATION="${I}/slapd.conf"
            else
                LogText "Result: ${I} does not contain slapd.conf"
            fi
        done
        # Check if we found a valid location
        if [ ! -z "${SLAPD_CONF_LOCATION}" ]; then
            Display --indent 4 --text "- Checking slapd.conf" --result "${STATUS_FOUND}" --color GREEN
        else
            Display --indent 4 --text "- Checking slapd.conf" --result "${STATUS_NOT_FOUND}" --color YELLOW
        fi
    fi
#
#################################################################################
#
    # Test        : LDAP-2228
    # Description : Check OpenLDAP slapd.conf file permissions
#
#################################################################################
#
    # Test        : LDAP-2232
    # Description : Check OpenLDAP ownership on files/directories
#
#################################################################################
#
    # Test        : LDAP-2236
    # Description : Check OpenLDAP database permissions
#
#################################################################################
#
    # Test        : LDAP-2240
    # Description : Check OpenLDAP unencrypted RootDN password
#
#################################################################################
#
    # Test        : LDAP-2244
    # Description : Check for LDAP configured client (and inform about LDAPS)
#
#################################################################################
#

WaitForKeyPress

#
#================================================================================
# Lynis - Security Auditing and System Hardening for Linux and UNIX - https://cisofy.com
